opencvでC++で作成したdllにビットマップを渡す必要があります。 DLLでは、画像を処理するためにMatオブジェクトを使用します。 BitmapオブジェクトをMatオブジェクトに変更する方法を知りたい私はIntPtrを使ってみましたが、MatコンストラクタはIntPtrをサポートしていないので、Matオブジェクトをどのように構築するのか分かりません。誰も私はこれを行うことができます知っていますか?あなたがコードの一部で私を助けることができるなら、それは最高でしょう。ありがとう。BitmapオブジェクトをMatオブジェクト(opencv)に変換するにはどうすればよいですか?
0
A
答えて
0
それを行うための簡単な方法は次のとおりです。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace System;
using namespace System::Drawing;
int main(array<System::String ^> ^args) {
Bitmap^ img = gcnew Bitmap(10, 10, System::Drawing::Imaging::PixelFormat::Format24bppRgb);
// or: Bitmap^ img = gcnew Bitmap("input_image_file_name");
System::Drawing::Rectangle blank = System::Drawing::Rectangle(0, 0, img->Width, img->Height);
System::Drawing::Imaging::BitmapData^ bmpdata = img->LockBits(blank, System::Drawing::Imaging::ImageLockMode::ReadWrite, System::Drawing::Imaging::PixelFormat::Format24bppRgb);
cv::Mat cv_img(cv::Size(img->Width, img->Height), CV_8UC3, bmpdata->Scan0.ToPointer(), cv::Mat::AUTO_STEP);
img->UnlockBits(bmpdata);
cv::imwrite("image.png", cv_img);
return 0;
}
ところで、あなたがC++/CLIを使用して作業している問題に言及する価値があります。
1
ありがとうございました! 私はそれを行う別の方法を見つけました。 C#:
[DllImport("addborders.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int main(IntPtr pointer, uint height,uint width);
unsafe
{
fixed (byte* p = ImageToByte(img))
{
var pct = (IntPtr) p;
x = main(pct, (uint)img.Height, (uint)img.Width);
}
textBox1.Text = x.ToString();
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
C++
extern "C"
{
__declspec(dllexport)
int main(unsigned char* image,unsigned int height,unsigned int width)
{
cv::Mat img = cv::Mat(height, width, CV_8UC1, image);
}
}
関連する問題
- 1. Emug :: CV :: MatをOpenCV cv :: Matに変換するにはどうすればよいですか?
- 2. OpenCVのMatオブジェクトをintに変換するには?
- 3. byte []をBitmapに変換するにはどうすればよいですか?
- 4. PDFページをC#Bitmapオブジェクトに変換するにはどうすればいいですか?
- 5. Matオブジェクトをビットマップに変換するにはどうすればいいですか?
- 6. JavaScriptオブジェクトを新しいオブジェクトに変換するにはどうすればよいですか?
- 7. Java:FileオブジェクトをJavaのStringオブジェクトに変換するにはどうすればよいですか?
- 8. JavaオブジェクトをJavascriptオブジェクトに変換するにはどうすればよいですか?
- 9. InputStreamオブジェクトをFileオブジェクトに変換するにはどうすればよいですか?
- 10. オブジェクトを別のオブジェクトに変換するにはどうすればよいですか?
- 11. Java DateオブジェクトをJRuby Timeオブジェクトに変換するにはどうすればよいですか?
- 12. [オブジェクト、オブジェクト]の配列をhtml()に変換するにはどうすればよいですか?
- 13. [オブジェクトオブジェクト]、[オブジェクトオブジェクト]を[オブジェクト、オブジェクト]に変換するにはどうすればよいですか?
- 14. BufferedImageをOpenCvに変換するMat
- 15. ByteArrayをImageMetaData()からBitmapに変換するにはどうすればよいですか?
- 16. どのようにしてC#WritableBitmapをEmguCV/OpenCV Matに変換しますか?
- 17. linqオブジェクトをasp.netオブジェクトに変換するにはどうすればいいですか?
- 18. JSONオブジェクトをJSONオブジェクトに変換するにはどうすればいいですか?
- 19. パスカルケースのJSONオブジェクトをラクダのケースJSONオブジェクトに変換するにはどうすればいいですか?
- 20. Javaイテレータのようなオブジェクトをクロージャシーケンスに変換するにはどうすればいいですか
- 21. openCV androidのByte []からMatオブジェクトを取得するには?
- 22. 環境変数をJSのオブジェクトに変換するにはどうすればよいですか?
- 23. OpenCVSharpを使用してMatをビットマップに変換するにはどうすればよいですか?
- 24. Javascriptでは、日付オブジェクトをエポックタイムスタンプに変換するにはどうすればよいですか?
- 25. SQLAlchemyでは、行を「本当の」Pythonオブジェクトに変換するにはどうすればよいですか?
- 26. MatをI C言語のIplImageに変換するにはどうすればよいですか?
- 27. OpenCvでcv :: Matをグレースケールに変換するにはどうしたらいいですか?
- 28. JSONオブジェクトを変更するにはどうすればよいですか?
- 29. SimpleOrderedMapをJSON文字列またはJSONオブジェクトに変換するにはどうすればよいですか?
- 30. タイムスタンプをDateまたはDateTimeオブジェクトに変換するにはどうすればよいですか?
あなたは見たことがあり、[この](http://docs.opencv.org/java/2.4.9/org/opencv/android/私のコードをチェックしてくださいUtils.html) –