現在、私はすべてのピクセルを1ずつ調べて色をチェックし、黒かどうかを見ています...そうでない場合、次のピクセルに移動します。これは私が約だけ確認できるので、永遠に取っています。 100ピクセル/秒(私のNSTimerの速度を上げるとアプリケーションが凍結するので、十分に速くチェックすることができません)だから、とにかくXcodeですべてのピクセルを黒に戻し、他のすべてを無視するだけで、すべてのピクセルではありません。私は、私のイメージ上で最も左側の黒いピクセルを検出しようとしています。イメージの黒いピクセルを検出するiOS
ここは私の現在のコードです。ピクセルが完全に黒本当に黒に近いがない場合には、それはまだ95%の黒のようであるピクセルを検出しますので...私はどこかでエラーのマージンを追加することができるものも
- (void)viewDidLoad {
timer = [NSTimer scheduledTimerWithTimeInterval: 0.01
target: self
selector:@selector(onTick:)
userInfo: nil repeats:YES];
y1 = 0;
x1 = 0;
initialImage = 0;
height1 = 0;
width1 = 0;
}
-(void)onTick:(NSTimer *)timer {
if (initialImage != 1) {
/*
IMAGE INITIALLY GETS SET HERE... "image2.image = [blah blah blah];" took this out for non disclosure reasons
*/
initialImage = 1;
}
//image2 is the image I'm checking the pixels of.
width1 = (int)image2.size.width;
height1 = (int)image2.size.height;
CFDataRef imageData = CGDataProviderCopyData(CGImageGetDataProvider(image2.CGImage));
const UInt32 *pixels = (const UInt32*)CFDataGetBytePtr(imageData);
if ((pixels[(x1+(y1*width1))]) == 0x000000) { //0x000000 is black right?
NSLog(@"black!");
NSLog(@"x = %i", x1);
NSLog(@"y = %i", y1);
}else {
NSLog(@"val: %lu", (pixels[(x1+(y1*width1))]));
NSLog(@"x = %i", x1);
NSLog(@"y = %i", y1);
x1 ++;
if (x1 >= width1) {
y1 ++;
x1 = 0;
}
}
if (y1 > height1) {
/*
MY UPDATE IMAGE CODE GOES HERE (IMAGE CHANGES EVERY TIME ALL PIXELS HAVE BEEN CHECKED
*/
y1 = 0;
x1 = 0;
}
?ありがとう!
どうすれば3bitに変更できますか?画像は 'CGImageRef UIGetScreenImage();を使ってキャプチャした画面上のセクションのスクリーンショットです。また、タイマーを使用しないようにしても構いませんが、無限ループに精通していません。それらを設定する私はまれにそれらを使用するので、私は笑を忘れたと思う。また、配列内のすべてのピクセルを検出し、個別にチェックするのではなく、黒のもののx座標とy座標だけを返すメソッドがありますか?(ループを使用していても) –
ループでは、画像の幅と高さを超えます。いずれにしても、すべてのピクセルをチェックする必要があります。どちらが黒であるか把握する他の方法はありません。私に少し待ってください。私はポストをいくつかのコードで更新します。 – UIAdam
恐ろしいコード!ありがとうございました!そして、申し訳ありませんが、私は(i + 1){i ++; }私はハハを知らない!それは永遠に私はループを行って以来、私はいつも他のステートメントを使用する/:コードをありがとう!それを試してみましょう! –